2023/12/231593字符
包装类 & 类数组
var num = 123; // 原始值数字
var objNum = new Number(123); // 对象数字(可加属性和方法)
objNum * 2; // 运算后又转换为原始值数字
undefined、null等原始值不可以有属性和方法
包装类
var num = 4;
num.len = 3;
// new Number(4).len = 3; --> delete
// new Number(4).len
console.log(num.len); //--> undefined
var str = "abcd";
str.length = 2;
// new String("abcd").length = 2; --> delete
// new String("abcd").length
console.log(str, str.length); //--> "abcd" 4
var str = "abc";
str += 1;
var test = typeof(str); // test == "string";
if (test.length == 6) {
test.sign = "typeof 的返回结果可能为 String";
// new String(test).sign = "typeof的返回结果可能为String"; --> delete
}
// new String(test).sign
console.log(test.sign); //--> undefined
类数组
var obj = {
"0" : 'a',
"1" : 'b',
"2" : 'c',
"length" : 3,
"push" : Array.prototype.push,
"splice" : Array.prototype.splice
}
属性要为索引(数字)属性,必须有 length 属性,最好加上 push
阿里面试题
var obj = {
"2" : "a",
"3" : "b",
"length" : 2,
"push" : Array.prototype.push
}
obj.push('c'); // 第一遍执行会覆盖 obj[obj.length]
obj.push('d');
console.log(obj); //--> {2: "c", 3: "d", length: 4, push: ƒ}
push 原理
Array.prototype.push = function (target) {
obj[obj.length] = target;
obj.length ++;
}